package com.huida.app.hutoolsusage;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.lang.Console;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.TreeMap;

/**
 * @author wangzhuangzhuang
 * @DESC:
 * @date 2022-01-11 17:06
 * Hutool-json的核心类
 * - JSONObject
 * - JSONArray
 * 除了核心类，还提供一些辅助类用于实现特定功能：
 * - JSONSupport Bean类继承此对象即可无缝转换为JSON或JSON字符串，同时实现toString()方法可以将当前对象输出为JSON字符串
 * - XML提供JSON与XML之间的快速转换，同时JSONUtil中有相应静态封装
 * - JSON、JSONObject和JSONArray共同实现的接口类，JSONUtil.parse方法默认返回此对象，可以根据实际类型判断后转换对象类型。
 * 与FastJSON类似，JSONObject实现Map接口，JSONArray实现List接口
 */
@SpringBootTest
@Slf4j
public class JsonUtilUsageDemo {

	@Test
	public void test01() {
		TimeInterval timer = DateUtil.timer();
		JSONObject jsonObject01 = JSONUtil.createObj();
		jsonObject01.getStr("key");
		jsonObject01.getInt("key");
		jsonObject01.getLong("key");
		jsonObject01.getDouble("key");
		jsonObject01.getBigDecimal("key");
		log.info("花费毫秒数： {}ms", timer.interval());
		log.info("返回花费时间，并重置开始时间：{}", timer.intervalRestart());
		log.info("花费分钟数：{}", timer.intervalMinute());
	}

	@Test
	public void test02() {
		TreeMap<Object, Object> treeMap = new TreeMap<Object, Object>() {
			private static final long serialVersionUID = 1L;
			{
				put("attributes", "a");
				put("b", "b");
				put("c", "c");
			}
		};
	}

	@Test
	public void test03(){
		String html = "{\"name\":\"Something must have been changed since you leave\"}";
		JSONObject jsonObject = JSONUtil.parseObj(html);
		String name = jsonObject.getStr("name");
		Console.log("name: {}", name); // name: Something must have been changed since you leave
	}

	@Test
	public void test04(){
		JSONObject set = JSONUtil.createObj()
				.set("aaa", "你好")
				.set("键2", "test");
		String s = JSONUtil.toXmlStr(set);

	}

}